const { defineConfig } = require("@vue/cli-service");

const path = require("path");

function resolve(dir) {
  return path.join(__dirname, dir)
}
module.exports = defineConfig({
  productionSourceMap:false,
  transpileDependencies: true,
  // 基本路径
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  // 输出文件目录
  outputDir: process.env.NODE_ENV === "production" ? "dist" : "devdist",
  lintOnSave: false,
  // css相关配置
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: true,
    // 开启 CSS source maps?
    sourceMap: false,
    // css预设器配置项
    // 注意：在 sass-loader v8 中，这个选项名是 "prependData"
    loaderOptions: {
      scss: {
        additionalData: `@import "./src/styles/main.scss";`,
      },
    },
  },
  //在添加下面的方法
  configureWebpack: {
    // plugins: [
    //   new BundleAnalyzerPlugin({ analyzerPort: 8920 })
    // ],
    optimization: {
      // nodeEnv: false,
      /**
       * runtimeChunk可选值有：true或'multiple'或'single'
       * true或'multiple'会有每个入口对应的chunk。不过一般情况下
       * 考虑到要模块初始化，设置为single就够多数情况下使用啦。
       * 详情见官网：https://webpack.docschina.org/configuration/optimization/#optimizationruntimechunk
       * */
      runtimeChunk: 'single',
      /**
       * 以前是CommonsChunkPlugin，现在换成optimization.splitChunks。普通项目下方的配置就足够用啦
       * 详情见官网：https://webpack.docschina.org/configuration/optimization/#optimizationsplitchunks
       * */
      splitChunks: {
        chunks: 'all', // 可选值：all，async 和 initial。all功能最强大，所以咱们就使用all
        maxInitialRequests: Infinity, // 最大并行请求数，为了以防万一，设置无穷大即可
        minSize: 20000, // 引入的模块大于20kb才做代码分割，官方默认20000，这里不用修改了
        maxSize: 60000, // 若引入的模块大于60kb，则告诉webpack尝试再进行拆分
      },
    }
  },
    chainWebpack(config) {
    config.plugin('html').tap(args => {
      args[0].title = "平凡博客"
      return args
    })
    const CompressionWebpackPlugin = require('compression-webpack-plugin')
    if (process.env.NODE_ENV === 'prod') {
      config.plugin('CompressionPlugin').use(
        new CompressionWebpackPlugin({
          test: /\.(js|css)$/,
          threshold: 10240, // 超过10kb的文件就压缩
          deleteOriginalAssets: false, // 删除压缩后的源文件
          minRatio: 0.8
        })
      )
    }
  },
  devServer:{
    port:3030,
    open:true,
    hot: true,//自动保存
  }
});
